Assignments and Memory

들어가기

Lecutre

Manipulating Lists

https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-2-python-lists?ex=12

위 강좌 2분 10초경 부터 보면 다음 장면들이 나온다.

Assignment

정의

단순 할당 연산자 (=)만 가지고 하는 연산. b = a

-> a를 b라고도 부르겠다, b는 a의 또다른 이름이다.

메모리영역 확인

한 메모리를 부르는 이름의 개수 확인

Id()

copy

단일 할당 연산자(=)만 쓰이지 않음

모든 자료형이 위와 같은 assignment와 copy가 있는건가?

-> List가 Mutable한 변수이기 때문에 해당. Immutable한 변수들은 애초에 값이 변경이 안 됨

Mutable

정의

값을 변경할 수 있는 자료형.

Mutable - 리스트, 딕셔너리, numpy의 배열

Immutable - 숫자, 문자열, 튜플

copy 대신 할당을 하면 어떤 문제가 생길까?

-> Mutable(값을 변경할 수 있는) 자료형을 다룰 때 문제가 됨.

Mutable한 자료형을 쓸 때 할당을 복사로 오해시 발생하는 문제

이런 문제가 있을 수 있지 않을까?하는 저의 상상입니다.

우리에게 머신러닝 모델의 파라미터를 조정한다고 가정

지금은 쉽게 티가나지만, 자료형이 더 복잡하고, 요인들로 생각하는 값들이 더 많다면?

assignment 인것과 아닌것.

Is assignment,

- a = b
- a = b (+,-,*,..) c
    - ex) a = b + c, a = a + b
- 함수의 매개변수

Not assignment

- 특정 내장함수(append 함수, copy 함수)
- copy.copy(변수)
- 슬라이싱
    * ex) a = b[:]
- a (+,-,*..)= c
    * ex) a += b

pass by assignment

함수의 매개변수로 넘어갈 때, 함수 내부에 새로운 변수를 할당하는 것임

파이썬의 리터럴 상수

리스트 내부 값의 주소

리스트 안에 또 리스트

리스트 안의 리스트 값 변경해보기

copy면 독립적인가?

copy와 deepcopy

copy는 객체에 포함된 레퍼런스가 가르키는 값을 복사하지는 않음 (얕은 복사, shallow copy)

레퍼런스

Datacamp Youtube

Python Tutorial: Pass by assignment

Blog

Deep copy & Shallow copy